// stores/todosStore.ts
import { defineStore } from 'pinia';

export interface Todo {
	id : number;
	text : string;
	completed : boolean;
}

export const useTodosStore = defineStore('todos', {
	state: () => ({
		todos: [] as Todo[]
	}),
	actions: {
		addTodo(text : string) {
			const newTodo : Todo = {
				id: Date.now(),
				text,
				completed: false
			};
			this.todos.push(newTodo);
		},
		removeTodo(id : number) {
			this.todos = this.todos.filter(todo => todo.id !== id);
		},
		toggleTodo(id : number) {
			this.todos = this.todos.map(todo => (todo.id === id ? { ...todo, completed: !todo.completed } : todo));
		}
	},
	getters: {
		todosCount: (state : { todos : Todo[] }) => state.todos.length,
		completedTodos: (state : { todos : Todo[] }) => state.todos.filter(todo => todo.completed)
	}
});